package com.authority.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.authority.entry.AuthUserDO;
import com.authority.entry.AuthUserRoleDO;
import com.authority.query.UserQuery;
import com.authority.result.PageResult;
import com.authority.vo.AuthUserVO;
import com.authority.vo.LoginVO;

/** 
 * @Description: 用户管理
 * @author limeng.g
 * @date 2015年10月15日 下午4:33:54 
 *  
 */  
public interface UserService {
	
	/**
	 * 新增用户
	 * @param authUserRoleDO
	 * @return
	 */
	String insertUser(AuthUserVO authUserVo);

	
	/**
	 * 根据账号查询
	 * @param query
	 * @return
	 */
	AuthUserDO queryUserByAccount(String  account);
	
	
	/**
	 * 更新用户
	 * @param authUserRoleDO
	 * @return
	 */
	String updateUser(AuthUserVO authUserVo);

	/**
	 * 带分页的用户查询
	 * @param query
	 * @param page
	 * @return
	 */
	PageResult<AuthUserDO> queryUserListPage(UserQuery query);


	/**
	 * 更改用户登录时间
	 * @param id
	 */
	Integer updateUserLastLoginTime(Long id);
	
	/**
	 * <p>Title: updateUserLastLoginIp</p>
	 * <p> 功能描述:修改最后登录ip </p>
	 * @param id
	 * @param request
	 * @return
	 */
	Integer updateUserLastLoginIp(Long id,HttpServletRequest request);
	
	// 登录
	LoginVO login(String account, String password) throws Exception;
	/**
	 * <p>Title: queryByAppAccount</p>
	 * <p> 功能描述:校验app账号密码 </p>
	 * @param account
	 * @param password
	 * @return
	 */
	Integer checkByAppAccount(String account,String password);
	
	/**
	 * 根据id查询用户
	 * @param uid
	 * @return
	 */
	AuthUserVO queryUserById(Long uid,boolean checkAuthority);


	/**
	 * 修改用户密码
	 * @param db
	 */
	void updatePassword(AuthUserDO db);
	void updatePasswordById(AuthUserDO db);
	void updatePasswordByAccount(AuthUserDO db);

	//修改用户
	int updateUserRole(AuthUserDO authUserDO,Long sysId);
	
	List<AuthUserRoleDO> getUserRole(AuthUserDO authUserDO,Long sysId);
	
	List<AuthUserDO> queryUserByParam(AuthUserDO authUserDO);
	
	void updateUserAccountByOrganId(Long organId);
	
	Integer getNewWorkNumber(AuthUserVO authUserVo);
	
	String deleteUser(Long userId,Long operatorId,boolean checkAuthority);
}
